/**
 * 
 */
/**
 * <h2>Script Compilation and Evaluation</h2>
 * 
 * <p>
 * The power of the blueprint design pattern lies in how the <code>value</code>
 * fields of {@link Property} objects are interpreted. Because of the XML
 * format, the <code>value</code> tag of a Property XML snippet is interpreted
 * as a String first and foremost, which allows for runtime evaluation of any
 * script-like code that is included in it. In fact, the only reason why the
 * blueprint design pattern has any application in procedural content generation
 * is because the blueprints can contain expressions that are only evaluated at
 * runtime, and as such, the framework for writing and interpreting scripts
 * included in blueprint definitions is integral to the rest of the project.
 * </p>
 * 
 * <p>
 * This package includes abstract classes that follow the interpreter design
 * pattern, namely {@link AbstractExpression}, {@link NonterminalExpression},
 * and {@link TerminalExpression}. By extending these classes, users of this
 * library can extend or completely redefine the structure, syntax, and behavior
 * of the scripting pseudo-language used in this implementation of the blueprint
 * design pattern.
 * </p>
 * 
 * <p>
 * Additionally, this package includes an abstract class to be used as the
 * interface between the blueprint pattern XML files and the scripting
 * pseudo-language in the {@link AbstractCompiler}. This class is responsible
 * for compiling entire blueprints and factories of scripts at once, and as such
 * must be extended to accommodate the requirements of the scripting
 * pseudo-language being used.
 * </p>
 * 
 * <p>
 * The specifics and requirements of the script compilation tools included in
 * this package can be daunting at first, which is why a default compiler and
 * scripting language is defined in the
 * {@link com.zastoupil.pgc.blueprint_pattern.xml.compile.bluescript} package.
 * Due to the extendible nature of the framework provided in this package, new
 * users should examine the scripting and compiling definitions there before
 * attempting to extend the existing scripting language or to define their own.
 * </p>
 * 
 * @author Peter Zastoupil
 * 
 */
package com.zastoupil.pgc.blueprint_pattern.xml.compile;

